Computer-implemented project management tools have evolved into sophisticated systems that allow very large projects with many tasks to be managed effectively. Some tools allow designation of a so called “critical path” that identifies a task or set of tasks that must be completed before other tasks can be started. Knowing which tasks must be completed before other tasks can be started helps business organizations allocate resources on a project. When dates are changed in the project, the schedules are automatically updated based upon dependencies between tasks. For example, suppose that task A is on the critical path and tasks B and C cannot be started until task A is completed. If the projected end date of task A is changed, then the projected start dates of tasks B and C are automatically updated by the project management tool to reflect the change made to the projected end date of task A.
One of the problems with conventional project management systems is that they tend to accumulate a large amount of historical data. For example, in some situations, changing a single date on a task can cause changes in a large number of dates for other tasks. This is particularly true in situations where, because of dependencies, changes in dates cause a large number of other dates to change because of cascade effects. Conventional project management systems store both current and historical date information. One consequence of this is that as the amount of historical data grows, queries against the schedule data become more complex and computationally expensive to process. Another issue with conventional project management systems is that the user interfaces are often focused on project tasks that have been scheduled and little attention is given to tasks that have not yet been scheduled.